#pragma once

#include <stdlib.h>

typedef struct _tcp_msg_t
{
  uint8_t *buf;
  size_t len;
} tcp_msg_t;

#define INTEGARAL_MAX ((1<<16)-1)
typedef struct _tcp_sock_t
{
  int sock;
  uint8_t label;
  uint8_t ready;            // 0-初始状态， 1-准备状态(游戏中也是此状态)， 2-游戏结束状态(上报完了自身此局积分)
  double integaral;
  char *name;             // 用户名称
  uint16_t rank; // 名次
  struct tcp_sock_t *next;
} tcp_sock_t;

extern tcp_sock_t *tcp_socks;

void ready_tcp_client(int sock);
uint8_t is_all_ready(void);
void report_tcp_client(int sock, double integaral);
uint8_t is_all_report(void);
void TCP_server_init(void);
void tcp_send(tcp_msg_t *msg, int sock);
void tcp_send_either(tcp_msg_t *msg, int sock);
void tcp_broadcast(tcp_msg_t *msg);
